#ifndef COLISION_H
#define COLISION_H

#include "bola.h"

class Colision
{
public:
    Colision();
    ~Colision();

    Bola* getEnteActivo() {
        return enteActivo;
    }

    void setEnteActivo(Bola* enteActivo) {
        this->enteActivo = enteActivo;
    }

    Punto2d getPosicionColisionEnteActivo() {
        return posicionColisionEnteActivo;
    }

    void setPosicionColisionEnteActivo(Punto2d posicicionColisionEnteActivo) {
        this->posicionColisionEnteActivo = posicicionColisionEnteActivo;
    }

    Vector2d getAceleracionEnteActivo() {
        return aceleracionEnteActivo;
    }

    void setAceleracionEnteActivo(Vector2d acelreacion) {
        this->aceleracionEnteActivo = acelreacion;
    }

    Vector2d getAceleracionEntePasivo() {
        return aceleracionEntePasivo;
    }

    void setAceleracionEntePasivo(Vector2d acelreacion) {
        this->aceleracionEntePasivo = acelreacion;
    }

    double getProporcionDesplazamientoRealizado() {
        return proporcionDesplazamientoRealizado;
    }

    void setProporcionDesplazamientoRealizado(double proporcion) {
        this->proporcionDesplazamientoRealizado = proporcion;
    }

    Bola* getEntePasivo() {
        return entePasivo;
    }

    void setEntePasivo(Bola* entePasivo) {
        this->entePasivo = entePasivo;
    }

    Punto2d getPuntoColision() {
        return puntoColision;
    }

    void setPuntoColision(Punto2d puntoColision) {
        this->puntoColision = puntoColision;
    }

    void ejecutar();
    int compararCon(const Colision& otraColision);

    bool esValida() { return enteActivo != NULL && entePasivo != NULL; }

private:
    Punto2d puntoColision;
    double proporcionDesplazamientoRealizado;

    Bola* enteActivo;
    Punto2d posicionColisionEnteActivo;
    Vector2d aceleracionEnteActivo;
   
    Bola* entePasivo;
    Vector2d aceleracionEntePasivo;




    


};

#endif // COLISION_H
